const fs = require('fs');
const path = require('path');

// 1. 解析命令行参数：获取要删除的目标（process.argv[2]）
const targetName = process.argv[2];
if (!targetName) {
  console.error('❌ 错误：请传入要删除的文件或文件夹名称！');
  console.error('用法：node delManager.js <目标名称>（如 node delManager.js myfile.txt 或 node delManager.js mydir）');
  process.exit(1); // 退出程序，状态码 1 表示错误
}

// 拼接目标的完整路径
const targetPath = path.join(__dirname, targetName);

// 2. 递归删除函数：支持文件和文件夹
function recursiveDelete(targetPath) {
  try {
    // 先判断目标是否存在
    if (!fs.existsSync(targetPath)) {
      console.error(`❌ 错误：目标 "${targetPath}" 不存在！`);
      return;
    }

    // 获取目标的状态信息（判断是文件还是文件夹）
    const stats = fs.statSync(targetPath);

    if (stats.isFile()) {
      // 3. 处理文件：直接删除（fs.unlinkSync 同步删除文件）
      fs.unlinkSync(targetPath);
      console.log(`✅ 已删除文件：${targetPath}`);
    } else if (stats.isDirectory()) {
      // 4. 处理文件夹：递归删除内部所有内容，再删除空文件夹
      // 读取文件夹内所有文件/子文件夹
      const files = fs.readdirSync(targetPath);

      // 遍历每个子项，递归删除
      files.forEach((file) => {
        const childPath = path.join(targetPath, file);
        recursiveDelete(childPath); // 递归调用：删除子文件/子文件夹
      });

      // 所有子项删除后，删除空文件夹（fs.rmdirSync 同步删除文件夹）
      fs.rmdirSync(targetPath);
      console.log(`✅ 已删除文件夹：${targetPath}`);
    }
  } catch (err) {
    // 捕获其他异常（如权限不足）
    console.error(`❌ 删除失败：${targetPath}`);
    console.error(`原因：${err.message}`);
  }
}

// 3. 执行递归删除
console.log(`=== 开始删除目标：${targetPath} ===`);
recursiveDelete(targetPath);
console.log(`=== 删除任务结束 ===`);
process.exit(0); // 正常退出